package com.wdc.hashtable;

import java.util.*;

@SuppressWarnings("all")
public class E01Leetcode49 {

    public static List<List<String>> groupAnagrams(String[] strs) {
        //1、创建 hash 表
        Map<String,List<String>> map = new HashMap<>();
        //3、遍历每个分割后的数组 查询 hash 表
        for (String str : strs) {
            char[] charArray = str.toCharArray();
            //排序
            Arrays.sort(charArray);
            String key = new String(charArray);
            //判断  如果不存在 则加入
            List<String> list = map.get(key);
            if (!map.containsKey(key)){
                if (list == null)
                    list =  new ArrayList<>();
                    list.add(str);
                    map.put(key,list);
            }else {
                //存在则加入集合
                list.add(str);
            }

        }

        //4、最后把集合封装起来返回
        return new ArrayList<>(map.values());
    }

    public static List<List<String>> groupAnagrams2(String[] strs) {
        //1、创建 hash 表
        Map<String,List<String>> map = new HashMap<>();
        //3、遍历每个分割后的数组 查询 hash 表
        for (String str : strs) {
            char[] charArray = str.toCharArray();
            //排序
            Arrays.sort(charArray);
            String key = new String(charArray);
            List<String> list = map.get(key);
            if (list == null){
                list = new ArrayList<>();
                map.put(key,list);
            }
            list.add(str);

        }

        //4、最后把集合封装起来返回
        return new ArrayList<>(map.values());
    }

    public static void main(String[] args) {
         String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
        List<List<String>> lists = groupAnagrams(strs);
        System.out.println(lists);
    }




}
